package com.lifeibiao.exception;

import java.text.ParseException;
import java.text.SimpleDateFormat;

public class ExceptionTestDriver {
    public static void main(String[] args) {
        //test01();
        //test02();
        //test03();
        //test11();
        //test12();
        int i = test21();
        System.out.println("return和finally执行先后关系：" + i);
    }

    /**
     * 注意return和finally的执行的先后顺序
     */
    private static int test21(){
        // 创建个一个日期格式转换的工具类SimpleDateFormat的实例对象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        try {
            sdf.parse("2019-02-18 10 30:17"); //此处会发生异常
            System.out.println("准备执行try-retrun");
            return 1;
        }catch (Exception e){
            // 进行异常处理
            System.out.println("发生了异常2222："+e.getMessage());
            e.printStackTrace();
            System.out.println("准备执行catch-retrun");
            return 2;
        }finally{
            System.out.println("这里执行了finally");
            //System.out.println("准备执行finally-retrun");
            //return 3;
        }
    }

    /**
     * 异常分类：非运行时异常（检查性异常）
     */
    private static void test11(){
        // 创建个一个日期格式转换的工具类SimpleDateFormat的实例对象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        // 检查性异常要求进行强制处理；
        try {
            sdf.parse("2019-02-18 10 30:17");
        }catch (NullPointerException e){
            // 进行异常处理
            System.out.println("发生了异常1111");
        }catch (Exception e){
            // 进行异常处理
            System.out.println("发生了异常2222");
        }finally{
            System.out.println("这里执行了finally");
        }
    }

    /**
     * 异常分类：非运行时异常（检查性异常）
     */
    private static void test12(){
        // 创建个一个日期格式转换的工具类SimpleDateFormat的实例对象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        // 检查性异常要求进行强制处理；

        try {
            sdf.parse("2019-02-18 10:30:17");
        } catch (ParseException e) {
            e.printStackTrace();
        }

        try {
            sdf.parse("2019-02-18 10:30:17");
        }catch (NullPointerException|ParseException e){//‘|’符号为同级的异常类
            // 进行异常处理
        }
    }

    /**
     * 异常分类：运行时异常（非检查性异常）
     */
    private static void test01(){
        double dVal1 = 10.0;
        double dVal2 = 0;
        if(dVal2 == 0){
            System.out.println("除数不能为0");
        }else {
            System.out.println("dVal1 / dVal2为：" + (dVal1 / dVal2));
        }
    }
    /**
     * 异常分类：运行时异常（非检查性异常）
     */
    private static void test02(){
        double[] arrys = new double[3];
        int i = 4;
        if(i<arrys.length){
            System.out.println("输出正常");
        }else{
            System.out.println("发生运行时异常："+arrys[i]);
        }

    }
    /**
     * 异常分类：运行时异常（非检查性异常）
     */
    private static void test03(){
        String str = null;
        if (str != null){
            System.out.println("运行时发生异常："+str.indexOf(0));
        }

    }

}
